package com.rati.usercenter.utils;

/**
 * @author Lwh
 * @time 2022/12/15 17:10
 */
public class EnumUtils {
    /**
     * 根据属性值获取枚举类
     * @param enumType 目标枚举类
     * @param colName 属性字段名
     * @param value 要转换的值
     * @return 该值对应的枚举类
     * @param <T> 属性值类型
     * @param <E> 枚举类类型
     */
    public static <T, E extends Enum<E>> E ToEnum(Class<E> enumType,
                                           String colName, T value) {
        E t = null;
        colName = colName.substring(0, 1).toUpperCase() + colName.substring(1);
        try {
            for (E ele : enumType.getEnumConstants()) {
                if (enumType.getMethod("get" + colName).invoke(ele).equals(value)) {
                    t = ele;
                    break;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return t;
    }

}
